
\documentclass[UTF8,a4paper,10pt]{ctexart}
\usepackage[left=2.50cm, right=2.50cm, top=2.50cm, bottom=2.50cm]{geometry} %页边距
\CTEXsetup[format={\Large\bfseries}]{section} %设置章标题居左
 
 
%%%%%%%%%%%%%%%%%%%%%%%
% -- text font --
% compile using Xelatex
%%%%%%%%%%%%%%%%%%%%%%%
% -- 中文字体 --
%\setmainfont{Microsoft YaHei}  % 微软雅黑
%\setmainfont{YouYuan}  % 幼圆    
%\setmainfont{NSimSun}  % 新宋体
%\setmainfont{KaiTi}    % 楷体
%\setmainfont{SimSun}   % 宋体
%\setmainfont{SimHei}   % 黑体
% -- 英文字体 --
%\usepackage{times}
%\usepackage{mathpazo}
%\usepackage{fourier}
%\usepackage{charter}
\usepackage{helvet}
 
 
\usepackage{amsmath, amsfonts, amssymb} % math equations, symbols
\usepackage[english]{babel}
\usepackage{color}      % color content
\usepackage{graphicx}   % import figures
\usepackage{url}        % hyperlinks
\usepackage{bm}         % bold type for equations
\usepackage{multirow}
\usepackage{booktabs}
\usepackage{epstopdf}
\usepackage{epsfig}
\usepackage{algorithm}
\usepackage{algorithmic}
\renewcommand{\algorithmicrequire}{ \textbf{Input:}}     % use Input in the format of Algorithm  
\renewcommand{\algorithmicensure}{ \textbf{Initialize:}} % use Initialize in the format of Algorithm  
\renewcommand{\algorithmicreturn}{ \textbf{Output:}}     % use Output in the format of Algorithm  
\newtheorem{definition}{定义} 
\newtheorem{theorem}{定理}
\newtheorem{lemma}{法则}
 
\usepackage{fancyhdr} %设置页眉、页脚
%\pagestyle{fancy}
\lhead{}
\chead{}
%\rhead{\includegraphics[width=1.2cm]{fig/ZJU_BLUE.eps}}
\lfoot{}
\cfoot{}
\rfoot{}
 
 
%%%%%%%%%%%%%%%%%%%%%%%
%  设置水印
%%%%%%%%%%%%%%%%%%%%%%%
% \usepackage{draftwatermark}         % 所有页加水印
% \usepackage[firstpage]{draftwatermark} % 只有第一页加水印
% \SetWatermarkText{Water-Mark}           % 设置水印内容
% \SetWatermarkText{\includegraphics{fig/ZJDX-WaterMark.eps}}         % 设置水印logo
% \SetWatermarkLightness{0.9}             % 设置水印透明度 0-1
% \SetWatermarkScale{1}                   % 设置水印大小 0-1    
 
\usepackage{hyperref} %bookmarks
\hypersetup{colorlinks, bookmarks, unicode} %unicode
 
 
 
\title{\textbf{基于多视图学习的加密恶意流量检测方法}}
\author{ 刘吉元}
\date{}
 
\begin{document}
    \maketitle
 
 
% As a general rule, do not put math, special symbols or citations
% in the abstract or keywords.
\begin{abstract}
随着加密协议在网络通信中的广泛应用，传统的深度包检测方法无法检测恶意软件流量。
为了解决这个问题，新兴的统计方法通过从可观察数据字段中提取特征对恶意软件流量进行分类。
然而，它们忽略了特征冗余，直接将它们连接成一个统一的向量，该向量被进一步输入经典的统计模型，如SVM和kNN。
在本文中，我们考虑TLS加密恶意软件流量，并提出了一种多视图分类模型来检测它。
具体地说，提取了21个特征，并在语义上分为三组，即分组特征、TLS特征和证书特征，每个特征对应一个独立的视图。
然后，设计了一个有目的的多视图神经网络模型来整合三个数据视图中的互补信息。
据我们所知，这是文献中首次尝试将多视角学习技术应用于恶意软件流量检测，这将为进一步的研究提供有益的指导。
此外，我们还对该模型进行了大量的实验，以验证其有效性和优越性。
\end{abstract}



\section{介绍}

随着信息技术的飞速发展，网络安全正成为人们生活中的一个大问题。
为了保护用户的隐私，网络通信中广泛采用了加密技术，尤其是著名的传输层安全（TLS）协议。
\begin{figure}[h] 
  \centering
  \includegraphics[width=0.5\linewidth]{fig/https-crop}
  \caption{Chrome浏览器跨不同操作系统使用HTTPS加载的网页百分比。 相应的数据来自\emph{Google Transparency Report}\protect\footnotemark。}
  \label{fig:https}
\end{figure}
图\ref{fig:https}显示Chrome浏览器跨不同操作系统使用HTTPS（取决于TLS）加载的网页的百分比。
可以看出，加密流量逐年大幅增加，近年来超过$80\%$。
然而，通过利用TLS加密技术，攻击者可以绕过传统的深度数据包检查（DPI）设备，从而传递恶意数据包。
如何检测TLS恶意软件流量成为一个迫切需要解决的问题，并吸引了大量的安全研究人员。

一些研究人员通过定制DPI检测框架提供解决方案。
它们中的大多数采用中间人（MitM）方法，加密的流量由中间盒中断、解密和分析\cite{DBLP:conf/sigcomm/SherryLPR15,DBLP:journals/ton/FanGRCQ17,DBLP:conf/ccs/NingPLCC19,DBLP:conf/ccs/CanardDKPS17,DBLP:conf/nsdi/LanSPRL16,DBLP:conf/infocom/YuanWLW16}。
然而，这种方法引起了实用性和隐私性的关注\cite{DBLP:journals/corr/abs-2010-16388,DBLP:journals/corr/abs-2101-04338}。
一方面，中间盒增加了设备的额外成本和加密解密过程的延迟。
另一方面，它违反了端到端的隐私保障，导致潜在的信息泄漏。

\footnotetext{\url{https://transparencyreport.google.com}}

幸运的是，人们发现TLS协议的流量统计特征和可观测数据字段表现出正常流量和恶意流量之间的区别行为\cite{DBLP:conf/ccs/AndersonM16}。
基于这一观察，Anderson等人分解了TLS连接的构建过程，并从流量和TLS协议参数中提取了大量统计特征，如数据包时间序列、数据包长度、TLS版本等\cite{DBLP:conf/kdd/AndersonM17,DBLP:journals/virology/AndersonPM18}。
然而，Liu等人进一步选择了23个最稳健的特征，并将其分为三类，即数据包特征、TLS特征和证书未来\cite{DBLP:journals/cmc/Jiyuancmcmaldetect}。
此外，还考虑了DNS请求和响应信息在\cite{david2018identifying}中。

与DPI定制方法相比，统计解具有许多优点。
其中最重要的一点是，不需要解密TLS连接，从而确保隐私保障并减少通信延迟。
其中一些甚至可以在交换应用程序数据之前给出检测结果，从而可以在恶意软件流量发生之前检测到它\cite{DBLP:journals/cmc/Jiyuancmcmaldetect}。
然而，目前的研究忽略了提取特征之间的冗余，直接将它们连接成一个统一的向量来训练统计模型，如kNN和SVM，导致检测率不理想。
为了解决这个问题，我们首先通过以下方法从TLS流量中提取三组特征\cite{DBLP:journals/cmc/Jiyuancmcmaldetect}。
然后，我们提出了一个多视图神经网络模型来分类目标流是正常的还是由恶意软件生成的。
据我们所知，这是文献中首次尝试将多视角学习技术应用于恶意软件流量检测，这将为进一步的研究提供有益的指导。
此外，我们还对该模型进行了大量的实验，以验证其有效性和优越性。


\section{相关工作}

本文主要研究两个领域，包括加密恶意软件流量检测和多视图学习。
因此，我们分别简要介绍如下。

\subsection{加密恶意流量检测}

随着越来越多的恶意软件采用TLS加密技术来保护其网络活动，安全社区开发了大量的方法来分类目标流是否正常或恶意。
目前的研究大致可分为两类，即DPI定制方法和统计方法。

通过采用MitM风格，DPI定制方法首先解密流量，然后分析内部细节，最后加密并重新传输给客户端。
MitMProxy\footnote{\url{https://mitmproxy.org}}和SSLSplit\footnote{\url{https://www.roe.ch/SSLsplit}}是两种广泛使用的开源工具。
对于客户机-服务器通信，客户机首先与中间盒建立TLS连接并发送流量数据包。
当中间盒接收到数据包时，它将解密、分析、重新加密并使用新的TLS连接将数据包转发给服务器。
一些研究建议与中间盒共享TLS参数，这显著降低了重复连接的延迟\cite{DBLP:journals/ccr/NaylorSVLBLPRS15,DBLP:conf/conext/NaylorLGKS17,DBLP:conf/sp/BhargavanBDFO18,DBLP:conf/ndss/LeeSLCCCK19}。  
然而，由于网络流量的大规模和高速特性，设备的额外成本和加密解密过程中的延迟也是不可忽略的。
为了缓解这些问题，一些研究人员建议在不解密的情况下直接对加密数据执行数据包检查，比如BlindBox \cite{DBLP:conf/sigcomm/SherryLPR15}，SPABox \cite{DBLP:journals/ton/FanGRCQ17}，BlindIDS\cite{DBLP:conf/ccs/CanardDKPS17}和PrivBox \cite{DBLP:conf/ccs/NingPLCC19}。
以BlindBox \cite{DBLP:conf/sigcomm/SherryLPR15}为例，一组攻击规则首先由受信任的组织生成，比如\emph{McAfee}\footnote{\url{https://www.mcafee.com}}和\emph{Avast}\footnote{\url{https://www.avast.com}}。
在客户端之间的信息交换开始时，攻击规则中的关键字将被加密并与应用程序数据一起传输。
一旦中间框观察到一个新连接，它就会根据攻击规则在加密的应用程序数据中搜索加密的关键字。
此外，Lai等人改进了关键字匹配算法以保护中间框\cite{DBLP:journals/iacr/LaiYSLSSL20}，而Ning等人建议保护攻击规则的隐私，因为它们是可信组织的财产\cite{DBLP:conf/esorics/NingHPXLWD20}。
然而，在上述方法中观察到一个缺点，即如果通过关键字匹配判断连接可疑，则允许中间框解密数据以进行进一步检测。
这仍然违反了流量加密协议的端到端隐私保证。

为了最大限度地保护安全和隐私，新兴的统计方法在不直接中断TLS连接的情况下被动地分析流量。
可以观察到，正常和恶意软件流量在可观察到的元数据上表现出区分行为，这些元数据可以量化为特征向量。
例如，Anderson等人提取了大量特征，如数据包长度/时间序列和TLS版本，以分类流量是否是恶意的\cite{DBLP:conf/ccs/AndersonM16}。
他们还发现，由于不准确的地面真相和非平稳的数据分布，统计模型在网络安全领域实现缓慢，并在\cite{DBLP:conf/kdd/AndersonM17}。
然而，中定义了四个功能集，包括流元数据、数据包长度/时间序列、字节分布和未加密的TLS报头信息\cite{DBLP:journals/virology/AndersonPM18}。
这些研究使得在不解密的情况下检测加密的恶意软件流量成为可能。
Liu等人进一步从连接构建过程中选择23个特征，使构建的模型能够在恶意行为发生之前识别安全威胁\cite{DBLP:journals/cmc/Jiyuancmcmaldetect}。
此外，他们采用在线随机森林模型来适应快速变化的恶意软件流量。


\subsection{多视图分类}

多视图学习旨在通过整合每个数据视图下的补充信息来提高机器学习模型的性能。
根据缺乏监控信号，现有文献可分为三类，包括多视图聚类\cite{DBLP:conf/aaai/0003LWZY21,DBLP:journals/tkde/JiyuanTKDE20,9399655}，半监督多视图学习\cite{DBLP:conf/aaai/NieCL17,DBLP:conf/acml/BoKZSC19}，多视图分类\cite{DBLP:journals/corr/abs-2102-02051,DBLP:journals/corr/abs-2011-06170,DBLP:journals/pami/HuLT18,DBLP:journals/pami/LiuLTXXLKZ21,DBLP:journals/pami/LiuZLWTYSWG19}。
在本文中，多视图分类受到关注，因为在大多数实际应用中，多视图分类的性能远远优于其他分类。
随着神经网络的广泛应用，新兴的深度多视角分类引起了研究者的关注。
Kan等人开发了由视图特定子网络和公共子网络组成的MvDN网络，前者消除了视图之间的差异，而后者获得了所有视图共享的公共表示\cite{DBLP:conf/cvpr/KanSC16}。 
Hu等人共同学习了视图特定和常见潜在表示的多个距离度量的最佳组合\cite{DBLP:conf/sigir/HuZPL19}。
Zhang等人没有采用通用的自动编码器结构，而是从一致性表示中同时重构所有数据视图和标签，该一致性表示随着网络参数进一步优化\cite{DBLP:journals/corr/abs-2011-06170}。
Han等人提供了一种多视角分类范式，通过采用Dirichlet分布对类别概率进行建模，并结合每个视角的证据，给出相应的可靠性和预测\cite{DBLP:journals/corr/abs-2102-02051}。


\begin{figure*}[t] 
  \centering
  \includegraphics[width=0.95\linewidth]{fig/overview-crop}
  \caption{概述拟议的加密恶意软件流量检测方法。涉及两个独立的部分，包括特征提取和多视图分类。}
  \label{fig:overview}
\end{figure*}

\section{方法}

与DPI定制的方法相比，新兴的统计方法不需要解密流量进行进一步检测，这带来了三个好处：
1） 节约劳动力和设备成本；
2） 确保加密协议的端到端安全保障；
3） 不增加数据传输的延迟。
此外，通过适当的特征选择，他们可以在恶意行为发生之前发现潜在威胁\cite{DBLP:journals/cmc/Jiyuancmcmaldetect}。
然而，目前的研究忽略了特征之间的冗余，直接将它们连接起来训练统计模型。
因此，我们提出了一种多视图方法来检测TLS恶意软件流量，如图\ref{fig:overview}所示。
它可以分为两个模块，包括特征提取和多视图分类。
下文介绍了它们的详细情况。

\begin{figure}[h] 
  \centering
  \includegraphics[width=0.8\linewidth]{fig/tls_flow-crop}
  \caption{A typical TLS connection between client and server.}
  \label{fig:tls_flow}
\end{figure}

\subsection{特征提取}  

与大多数研究类似，本文提出的方法是在流（连接）级别检测加密的恶意软件流量。
图\ref{fig:tls_flow}显示了一个典型的TLS/SSL通信流，其中需要连接的设备定义为客户端，另一个定义为服务器。
一开始，三路TCP连接是建立的，因为TLS协议在其上运行。
接下来，通过在客户端和服务器之间交换参数来构建TLS连接。
例如，在\emph{Client Hello}消息中，客户机告诉服务器在即将到来的\emph{Data Exchange}过程中首选哪个版本的TLS协议。
一旦对所有参数进行了讨论并达成一致，应用程序数据将被传输。
注意，我们用五个元组标记目标流，即$<$\emph{client IP}, \emph{client port}, \emph{sever IP}, \emph{server port}, \emph{protocol}$>$，其中$<$\emph{server IP}, \emph{server port}, \emph{client IP}, \emph{client port}, \emph{protocol}$>$也指相同的流。
尽管如此，我们还是采用了开源工具\emph{MalDetect}\footnote{\url{https://github.com/liujiyuan13/MalDetect}} 以旁路模式捕获流量，与中间盒相比，保证了隐私保障，减少了流量延迟。

而不是直接将原始数据输入以下统计模型\cite{DBLP:journals/iotj/ShafiqTBDG21}，我们建议从上述交通流中提取三组手工特征。
使用的数据包是从TCP和TLS构建过程而不是数据交换过程中捕获的，这使得所提出的模型能够在恶意行为发生之前对TLS、SSL连接是正常的还是由恶意软件生成的进行分类。
具体来说，我们遵循\cite{DBLP:journals/cmc/Jiyuancmcmaldetect}并定义以下三组特征。
开始时，分组特征描述为：
\begin{enumerate}
  \item \emph{Inbound Bytes}: 从服务器到客户端的流字节的总和。
  \item \emph{Outbound Bytes}: 从客户端到服务器的流字节的总和。
  \item \emph{Inbound Packets}: 从服务器到客户端的数据包数。
  \item \emph{Outbound Packets}: 从客户端到服务器的数据包数。
  \item \emph{Duration}: 捕获时间的长度。
  \item \emph{SPL}: 数据包长度的顺序。我们通过以下法则\ref{lemma:sequence}数据包长度离散成一个步长为$150$的$11$-bin向量。
  \item \emph{SPT}: 数据包时间序列。我们通过遵循法则\ref{lemma:sequence}将时间间隔离散成一个步长为$50ms$的$11$bin向量。
\end{enumerate}
\begin{lemma}\label{lemma:sequence}
  对于一个数字队列$\{x_i\}_{i=1}^n$，对应的$m$-bin向量$\mathbf{b}\in\mathbb{R}^m$以步长$s$定义为 
  \begin{equation}
    \mathbf{b}_j = |\mathcal{S}_j|,
  \end{equation}
  其中 
  \begin{equation}
    \mathcal{S}_j = \{i\;|\; j\leq x_i < j*s,\; 1\leq j\leq m \}
  \end{equation}
  和$|\cdot|$为集合的长度。
\end{lemma}
然而，在TLS构建过程中，我们从可观测场中提取了六个TLS特征。
他们是
\begin{enumerate}
  \item \emph{TLS Version}: 在\emph{Client Hello}数据包中，客户机在以下连接中分配TLS版本。本文讨论了四个主要版本，包括SSL 3.0、TLS 1.0、TLS 1.1和TLS 1.2。
  \item \emph{provided Compression Method}：在\emph{Client Hello}数据包中，客户机向服务器提供自己支持的压缩方法列表。
  \item \emph{Selected Compression Method}：在\emph{Server Hello}数据包中，服务器为进一步连接选择压缩方法。
  \item \emph{provided Extensions}：扩展用于提供更多TLS详细信息，例如\emph{Server Name}。将考虑扩展类型。
  \item \emph{Selected Extensions}：服务器响应\emph{Server Hello}数据包中的一些扩展。
  \item \emph{TLS Packet Ratio}：在捕获期间，在客户端和服务器之间传输TLS和非TLS数据包。因此，考虑了TLS比率。
\end{enumerate}
此外，X.509证书是TLS连接中的一个重要组件。
大多数恶意软件采用自签名证书，而普通应用程序使用授权证书。
我们提取了以下八个特征：
\begin{enumerate}
  \item \emph{Certificate Number}：在大多数情况下，TLS连接中使用一个或多个证书。
  \item \emph{Bad Certificate Number}：有些证书格式混乱。
  \item \emph{Version Ratio}：特定证书版本的比率。
  \item \emph{Extension Ratio}：证书中存在多个扩展。因此，考虑了不同延伸类型的比率。
  \item \emph{Validity Mean}：每个证书都有一个有效期。考虑了它们的平均值。
  \item \emph{Public Key Length Mean}：考虑所有证书的公钥长度平均值。
  \item \emph{Public Key Algorithm Ratio}：公钥算法用于生成证书中的公钥。考虑了它们的比率。
  \item \emph{Signature Algorithm Ratio}：证书中有一个字段用于保存颁发者的签名。考虑了相应签名算法的比率。
\end{enumerate}
总体而言，我们分别提取了七个数据包特征、六个TLS特征和八个证书特征。

\begin{table*}[t]
\centering
\caption{所选正常和恶意软件流量的详细信息。}
\small
\label{tab:traffic_detail}
\begin{tabular}{llcl}
\toprule
Abbreviation & Identified Name & Flow Number & Description \\ \midrule
Normal & - & 66635 & 由非恶意软件或后台流量生成\\
Adw & Win32: Adware-gen & 29762 & 在运行到计算机时下载并安装其他威胁 \\
Drp & Win32: Dropper-Gen & 358247 & 为更多的自主恶意软件充电，如特洛伊木马、蠕虫和后门\\
Rtk & Win32: Rootkit-gen & 30592 & 通过执行一系列命令以Windows核心系统为目标\\
Susp & Win32: Evo-gen & 35118 & 收集数据，如系统设置，并发送给远程攻击者进行分析\\
\bottomrule
\end{tabular}
\end{table*}


\subsection{多视图分类}

据我们所知，目前用于检测加密恶意软件流量的统计方法将提取的特征直接连接到一个统一的向量中。
然而，不同的特征是不可比较的，特别是不同类别的特征。
对于上述三组特征，它们的冗余是统计模型训练中的另一个关注点。
我们将每个特征集视为交通流的相关数据视图。
因此，提出了一种用于恶意软件流量检测的多视图分类神经网络模型。

令$\mathcal{X} = \{\mathbf{x}_i^{(v)} \in \mathbb{R}^{d_v}\}_{i,v=1}^{n,V}$为$n$个数据项，且$V$为视图个数，并且$\mathbf{Y} \in \{1,2,\cdots,K\}^{n\times 1}$为相应的标签，其中$d_v$和$K$为第$v$个视图的维度和类别个数。
多视图方法通过整合不同视图之间的互补信息来提高分类性能。
本文采用全连通神经网络模型。
如图\ref{fig:overview}首先将原始特征向量映射为潜在表示，然后进行融合，最后用一致性分类网络计算结果。

定义第$v$个视图对应的编码器为$f_v(\cdot)$，对应的隐藏表达$\{\mathbf{h}_i^{(v)}\}_{v=1}^V$可以计算为
\begin{equation}\label{eq:latent_rep_v}
  \mathbf{h}_v = f_v(\mathbf{x}_i^{v}),
\end{equation}
其中，$f_v(\cdot)$由自动编码器预训练初始化。
其次，共同的隐藏表达为$\mathbf{h}_i$，如图\ref{fig:overview}所示，可以通过拼接$V$个视图的隐藏表达和联合的$\mathbf{h}_i^{(c)}$计算为
\begin{equation}\label{eq:latent_rep_v}
  \mathbf{h}_i = [\mathbf{h}_i^{(1)}; \mathbf{h}_i^{(2)}; \cdots; \mathbf{h}_i^{(V)}; \mathbf{h}_i^{(c)}], 
\end{equation}
其中，$[\cdot;\cdot]$表示水平拼接，且
\begin{equation}\label{eq:h_c}
  \mathbf{h}_i^{(c)} = \mathcal{M}(\mathbf{h}_i^{(1)}, \mathbf{h}_i^{(2)}, \cdots, \mathbf{h}_i^{(V)}).
\end{equation}
注意到，$\mathcal{M}(\cdot)$是融合$\{\mathbf{h}_v\}_{v=1}^V$的集合器，在相关文献中有多种实现方法\cite{DBLP:journals/pami/HuLT18}。
这里，
\begin{equation}\label{eq:M_instance}
  \mathcal{M}(\mathbf{h}_i^{(1)}, \mathbf{h}_i^{(2)}, \cdots, \mathbf{h}_i^{(V)}) = \frac{1}{V} \sum_{v=1}^V \mathbf{h}_i^{(v)}\mathbf{W}_v,
\end{equation}
其中，$\mathbf{W}_v$是第$v$个视图对应的权重，将$\mathbf{h}_v$映射到可对比的空间。
得到拼接的表达$\mathbf{h}$之后，采用一个分类网络来计算标签，如下：
\begin{equation}\label{eq:M_instance}
  \mathbf{y}_i' = g(\mathbf{h}_i)
\end{equation}
为了度量整个网络的分类损失，我们采用了广泛使用的交叉熵损失
\begin{equation}\label{eq:loss}
  loss = - \sum_{i=1}^n \sum_{k=1}^K\mathbf{y}_{i,k}\log(\mathbf{y}'_{i,k}),
\end{equation}
其中，$\mathbf{y}_i$是标签的一个热门密码$\mathbf{Y}_i$和$\mathbf{y}_{i,k}$为$\mathbf{y}_i$的第$k$个元素。
然而，随机梯度下降（SGD）被用来最小化等式(\ref{eq:loss})。

\section{实验}

\subsection{设置}

为了验证该方法的有效性和优越性，我们在恶意软件捕获设施项目（MCFP）的公共数据集上进行了大量实验\cite{stratodatasets}.  
它们是通过不断向入侵防御系统提供恶意软件和正常流量来收集的。
我们采用提供的\emph{.pcap}文件和所有有效负载数据。
然而，我们将相应的恶意软件可执行文件上载到\emph{VirusTotal}\footnote{\url{https://www.virustotal.com}}它从一群安全公司收集检测结果。
在本文中，使用\emph{Avast}的结果来标记交通流。
在数据清理中，我们删除少数类的通信量并保留大多数类，包括\emph{Normal}、\emph{Adw}、\emph{Drp}、\emph{Rtk}和\emph{Susp}。
因此，剩余520354个交通流，其详细信息见表\ref{tab:traffic_detail}。
其次，$80\%$随机选择流作为训练数据，而其他流用于测试。

下面的实验中还采用了三种典型的解决方案，即支持向量机（SVM）\cite{DBLP:journals/sac/SmolaS04}, $k$-Nearest Neighbors (kNN) \cite{DBLP:journals/tnn/ShakhnarovichDI08}和全连接神经网络（NN）。
由于它们对单视图数据进行操作，我们将三组提取的特征连接到一个统一的向量中，并直接向它们提供信息。
为了便于表达，建议的方法缩写为EMTD。
接着，我们引用\emph{scikit-learn}\footnote{\url{https://scikit-learn.org}}包复制SVM和kNN方法，而NN和MV由我们自己实现并发布于\emph{Github}\footnote{\url{https://github.com/liujiyuan13/EMTD-code_release}}.

用$1$表示恶意软件流量，用$0$表示正常流量，相应的混淆矩阵可在表\ref{tab:confusion_matrix}中定义。
在此基础上，我们采用了三个指标来衡量检测性能，包括
\begin{enumerate}
  \item \emph{FPR}: 正常流量误分类为生成恶意软件的比率，如公式(\ref{eq:fpr});
  \begin{equation}\label{eq:fpr}
    \text{FPR} = \frac{\text{FP}}{\text{FP} + \text{TN}}
  \end{equation}
  \item \emph{FNR}: 恶意软件流量误分类为正常流量的比率，如公式(\ref{eq:fnr});
  \begin{equation}\label{eq:fnr}
    \text{FNR} = \frac{\text{FN}}{\text{FN} + \text{TP}}
  \end{equation}
  \item \emph{Error Rate}: 误分类网络流量的比率，如公式(\ref{eq:error_rate})。
  \begin{equation}\label{eq:error_rate}
    \text{Error Rate} = \frac{\text{FP} + \text{FN}}{\text{FP} + \text{TN} + \text{FN} + \text{TP}}
  \end{equation}
\end{enumerate}


\begin{table}[t]
\centering
\caption{混淆矩阵定义。}
\small
\renewcommand\arraystretch{1.5}
\label{tab:confusion_matrix}
\begin{tabular}{|l|l|l|}
\hline
 & Detection: 1 & Detection: 0 \\ \hline
Label: 1 & True Positive (TP) & False Negative (FN) \\ \hline
Label: 0 & False Positive (FP) & True Negative (TN) \\ \hline
\end{tabular}
\end{table}

\begin{figure*}[!h] 
  \centering
  \includegraphics[width=0.98\linewidth]{fig/fig1-crop} \\
  \includegraphics[width=0.98\linewidth]{fig/fig2-crop}
  \caption{网络包特征分布，\emph{Normal}, \emph{Adw}, \emph{Drp}, \emph{Rtk}和\emph{Susp} 网络流量。}
  \label{fig:packet}
\end{figure*}

\begin{figure*}[!h] 
  \centering
  \includegraphics[width=0.98\linewidth]{fig/fig3-crop} \\
  \includegraphics[width=0.98\linewidth]{fig/fig4-crop} \\
  \includegraphics[width=0.98\linewidth]{fig/fig5-crop}
  \caption{TLS特征分布，\emph{Normal}, \emph{Adw}, \emph{Drp}, \emph{Rtk}和\emph{Susp}网络流量。}
  \label{fig:tls}
\end{figure*}

\begin{figure*}[!h] 
  \centering
  \includegraphics[width=0.98\linewidth]{fig/fig6-crop} \\
  \includegraphics[width=0.98\linewidth]{fig/fig7-crop} \\
  \includegraphics[width=0.98\linewidth]{fig/fig8-crop}
  \caption{证书特征分布，\emph{Normal}, \emph{Adw}, \emph{Drp}, \emph{Rtk}和\emph{Susp}网络流量。}
  \label{fig:cert}
\end{figure*}


\subsection{特征}

机器学习方法，包括所提出的方法，通过发现类之间的统计差异来检测异常。
因此，我们在图中可视化了三个集合的特征分布\ref{fig:packet}, \ref{fig:tls}和\ref{fig:cert}，从而提供对检测依据的洞察。
可以观察到，正常流量与所考虑的四种类型的恶意软件流量不同，即\emph{Adw}, \emph{Drp}, \emph{Rtk}和\emph{Susp}。
以feature\emph{Inbound Bytes}为例，正常流量的字节数分散分布，大约$5\%$比$6k$大，这与其他流量明显不同。
同时，\ emph{Adw}流量字节数主要分布在$2k$到$4k$的范围内，还有大约$20\%$小于$2k$或从$4k$到$6k$。
作为比较，\emph{Drp}和\emph{Rtk}的所有字节号都位于$2k$到$4k$的范围内。
然而，几乎所有的\emph{Susp}字节数都小于$2k$，或者从$4k$到$6k$。
类似的观察结果不仅可以在数据包特征中获得，还可以在TLS特征和证书特征中获得。
还观察到以下一些其他现象：
\begin{enumerate}
  \item 正常和恶意软件流量在一小部分功能上没有差异，包括\emph{provided Compression Method}、\emph{Selected Compression Method}和\emph{Bad Certificate Number}，这在建议的方法中似乎不重要。
  然而，这可能是由于所用数据集的局限性造成的，即并非所有的流量分布都被收集。
  因此，我们还将它们保留在功能列表中。
  \item 虽然某些特征值对应于流量的一小部分，但它们在检测异常时至关重要。
  例如，只有大约$5\%$的正常流量携带超过$6k$的入站字节，如图（\ref{fig:packet}）的第一个子图所示。
  作为比较，没有恶意软件流量这样做，表现出最大的检测差异。
\end{enumerate}
综上所述，所有流量类别之间的明显分布差异为利用机器学习技术检测恶意软件流量提供了基础。

\begin{table}[t]
\centering
\caption{比较恶意软件流量检测结果。}
\small
\label{tab:detection_result}
\begin{tabular}{llcccc}
\toprule
Metric & Setting & \multicolumn{1}{c}{SVM} & \multicolumn{1}{c}{kNN} & \multicolumn{1}{c}{NN} & \multicolumn{1}{c}{EMTD} \\ \midrule
\multirow{5}{*}{FPR ($\%$)} & Adw$^+$ & 0.0075 & 0.0075 & 0.0150 & \textbf{0.0075} \\
 & Drp$^+$ & 0.0000 & 0.0150 & 0.0000 & \textbf{0.0000} \\
 & Rtk$^+$ & 0.0000 & 0.0000 & 0.0000 & \textbf{0.0000} \\
 & Susp$^+$ & 0.0000 & 0.0000 & 0.0300 & \textbf{0.0000} \\
 & All & \textbf{0.0150} & 0.0525 & 0.0525 & 0.0450 \\ \midrule
\multirow{5}{*}{FNR ($\%$)} & Adw$^+$ & 0.0504 & 0.0504 & 0.0504 & \textbf{0.0336} \\
 & Drp$^+$ & 0.0112 & \textbf{0.0070} & 0.0112 & 0.0112 \\
 & Rtk$^+$ & 0.0000 & 0.1144 & 0.0000 & \textbf{0.0000} \\
 & Susp$^+$ & 0.0427 & 0.0285 & 0.0000 & \textbf{0.0000} \\
 & All & 0.0220 & 0.0694 & 0.0143 & \textbf{0.0132} \\ \midrule
\multirow{5}{*}{Error Rate ($\%$)} & Adw$^+$ & 0.0207 & 0.0207 & 0.0259 & \textbf{0.0156} \\
 & Drp$^+$ & 0.0094 & \textbf{0.0082} & 0.0094 & 0.0094 \\
 & Rtk$^+$ & 0.0000 & 0.0360 & 0.0000 & \textbf{0.0000} \\
 & Susp$^+$ & 0.0147 & 0.0098 & 0.0197 & \textbf{0.0000} \\
 & All & 0.0211 & 0.0673 & 0.0192 & \textbf{0.0173} \\ \bottomrule
\end{tabular}
\end{table}


\subsection{检测结果}\label{sec:detection_result}

为了验证所提出的多视图算法对恶意软件流量检测的有效性，我们将其与三种基本分类算法，即SVM、kNN和NN进行了比较。
相应的结果如表\ref{tab:detection_result}。
值得注意的是，\emph{Adw$^+$}指将\emph{Adw}流量与\emph{Normal}流量混合。
显然，\emph{Drp$^+$}、\emph{Rtk$^+$}和\emph{Susp$^+$}遵循相同的设置。
此外，\ emph{All}表示将所有流量混合在一起，并将所有类别的恶意软件流量视为异常。
尽管如此，如果EMTD的结果最小，我们还是用黑体字标出。
否则，将标记最小的结果。
为了分析该表，我们得出以下观察结果：
\begin{enumerate}
  \item 所有方法在所有设置上显示低于$0.1\%$FPR、FNR和错误率。
  在部分设置中，指标小于$0.0001\%$甚至更好。
  这很好地验证了提取特征的有效性。
  \item 尽管所提出的多视图算法在FPR上的\emph{All}设置和FNR和错误率上的\emph{Drp$^+$}设置中的kNN比SVM差一些，但它在几乎所有设置中都实现了最小的FPR、FNR和错误率。
  这充分说明了所提出的多视图方法相对于广泛使用的方法的优越性。
\end{enumerate}
总之，实验验证了所提取特征的有效性和所提出的多视图方法的优越性。

\begin{figure*}[t] 
  \centering
  \includegraphics[width=\linewidth]{fig/convergence_four-crop}
  \caption{按\emph{Adw$^+$}、\emph{Drp$^+$}、\emph{Rtk$^+$}和\emph{Susp$^+$}设置中的训练历元划分的丢失、FPR、FNR和错误率变化。}
  \label{fig:convergence}
\end{figure*}

\begin{table}[t]
\centering
\caption{不同特征集上的检测结果。}
\small
\label{tab:abalation_study}
\begin{tabular}{llcccc}
\toprule
Metric & Setting & \multicolumn{1}{c}{Packet} & \multicolumn{1}{c}{TLS} & \multicolumn{1}{c}{Cert.} & \multicolumn{1}{c}{All$^*$} \\ \midrule
\multirow{5}{*}{FPR ($\%$)} & Adw$^+$ & 0.0600 & 0.0450 & 2.1310 & \textbf{0.0075} \\
 & Drp$^+$ & 0.8254 & 0.0075 & 0.9905 & \textbf{0.0000} \\
 & Rtk$^+$ & 0.6903 & 0.0150 & 0.9905 & \textbf{0.0000} \\
 & Susp$^+$ & 5.2750 & 0.0375 & 3.2040 & \textbf{0.0000} \\
 & All & 1.3807 & 0.0525 & 4.1044 & \textbf{0.0450} \\ \midrule
\multirow{5}{*}{FNR ($\%$)} & Adw$^+$ & 0.1008 & 0.0336 & 8.9535 & \textbf{0.0336} \\
 & Drp$^+$ & 0.0335 & 0.0112 & \textbf{0.0000} & 0.0112 \\
 & Rtk$^+$ & 4.5105 & 5.2296 & 0.0000 & \textbf{0.0000} \\
 & Susp$^+$ & 0.6549 & 0.0285 & 23.8326 & \textbf{0.0000} \\
 & All & 0.5576 & 0.3692 & 2.4464 & \textbf{0.0132} \\ \midrule
\multirow{5}{*}{Error Rate ($\%$)} & Adw$^+$ & 0.0726 & 0.0415 & 4.2376 & \textbf{0.0156} \\
 & Drp$^+$ & 0.1577 & 0.0106 & 0.1553 & \textbf{0.0094} \\
 & Rtk$^+$ & 1.8924 & 1.6559 & 0.6788 & \textbf{0.0000} \\
 & Susp$^+$ & 3.6804 & 0.0344 & 10.3238 & \textbf{0.0000} \\
 & All & 0.6630 & 0.3286 & 2.6588 & \textbf{0.0173} \\ \bottomrule
\end{tabular}
\end{table}

\subsection{消融研究与收敛}

此外，还进行了额外的实验，以验证EMTD整合多个数据视图信息的能力。
通过遵循第\ref{sec:detection_result}节中的相同设置，我们分别将所提出的多视图方法与每一组特征相结合，并将其结果与同时提供所有特征集的结果进行比较。
表中给出了相应的结果\ref{tab:abalation_study}。
请注意，\emph{Cert.}是\emph{Certificate}的缩写，而\emph{All$^*$}是三个功能集的组合。
我们可以看到，当使用所有特征时，FPR、FNR和错误率都显著降低，这很好地证明了所提出的多视图方法可以集成数据包、TLS和证书特征的有益细节。

此外，通过训练历元记录测试数据的丢失、FPR、FNR和错误率，如图\ref{fig:convergence}。
对应于\emph{All}由于空间限制，设置被省略。
可以观察到
\begin{enumerate}
  \item 目标损失单调地减小到最小值，验证训练和测试数据是否来自单一分布，最小化训练数据的损失将导致测试数据的较小损失值。
  \item 在\emph{Adw$^+$}, \emph{Rtk$^+$}和\emph{Susp$^+$}的设置，FNR和错误率先急剧下降，然后缓慢下降，并向常数方向有微小波动。
  这说明模型性能随着训练过程和损耗的减少而提高，从而证明了所设计的损耗函数的有效性。
  \item 在\emph{Adw$^+$}, \emph{Rtk$^+$}和\emph{Susp$^+$}设定中，FPR从零开始，这是由模型最初将所有数据视为正常数据引起的。
  \item 在\emph{Drp$^+$}设定中，FPR、FNR和错误率从较小的值开始，然后在少于$5$epochs的时间段内降至最低，并在后一次训练中保持稳定。
  这可能是由于\emph{Normal}和\emph{Drp}通信量之间的高度可分性造成的。
\end{enumerate}
总的来说，损失和所有指标随着训练时间的延长而减少，这表明了所设计的损失函数的有效性。


\section{讨论}

\subsubsection{优点}
DPI定制方法打破了TLS协议的端到端保证，导致潜在的隐私泄漏威胁。
同时，网络传输的延迟也受到严重影响。
作为比较，该方法提取交通流特征和训练机器学习模型进行检测，较好地解决了上述问题。
此外，该方法从TCP和TLS构建过程中提取特征，使得在恶意行为发生之前检测恶意软件流量成为可能。

\subsubsection{Novelty}
现有的基于机器学习的方法将所有特征连接成一个通用向量。
同时，我们提出了一个有目的的多视图学习神经网络模型，以优化整合三组特征，实现良好的性能。
据我们所知，这是第一次将多视角学习模型应用于恶意软件流量检测中，这将为以后的研究提供有益的指导。

\subsubsection{Extension}
该方法从特征工程和模型设计两个方面提高了检测性能。
此外，特征不限于提取的三组特征。
例如，DNS、URL等功能可以在将来的工作中使用。

\section{结论}

为了检测TLS加密的恶意软件流量，本文提出了一种多视图方法EMTD。
它不仅从工程设计上提高了检测性能，而且从机器学习模型设计上也提高了检测性能。
据我们所知，这是首次将多视图学习模型应用于恶意软件流量检测。
然而，我们在MCFP数据集上进行了大量的实验，验证了其有效性和优于经典方法。


\bibliographystyle{plain}
\bibliography{IEEEfull}
\end{document}